iT邦幫忙

2023 iThome 鐵人賽

DAY 6
0
自我挑戰組

自我挑戰系列 第 9

#08 service and ingress

  • 分享至 

  • xImage
  •  

Service

  • 在 Kubernetes 中,Service 是一個抽象層,用於定義應用程式的網路端點。Service 允許為一組 Pod 提供單一的網路入口,同時隱藏了實際 Pod 的 IP 地址。這使得應用程式可以相互通信,而不需要知道其他 Pod 的具體位置。

種類

  • Kubernetes 支援多種服務類型,以下是其中幾種:
    • ClusterIP: 這是預設的服務類型,為應用程式提供了一個 cluster 內部的虛擬 IP。只有 cluster 內部的其他 Pod 可以訪問該 IP。
    • NodePort: 此服務類型將一個指定的端口開放到每個節點上,允許外部流量通過節點的 IP 和該端口進行訪問。
    • LoadBalancer: 在支援的雲平台上,LoadBalancer 服務類型會自動配置雲提供商的負載平衡器,允許外部流量進入 cluster。
    • ExternalName: 此服務類型用於將服務對應到 cluster 外部的 DNS 名稱。

創建 Service

以下是一個簡單的 Service 定義示例,將流量導向應用程式的 Pod:

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  • 此 Service 名為 my-service,使用 selector 選擇 label 為 app: my-app 的 Pod。流量將進入 Service 的 TCP 80 端口,然後被轉發到選中的 Pod 的 8080 端口。

Ingress

  • 在 Kubernetes 中,Ingress 是一個控制器,它管理對 cluster 中 service 的外部訪問。Ingress 允許通過 HTTP 和 HTTPS 規則定義網路路由,從而將流量導向不同的 service 或 service 的不同部分。通過 Ingress,您可以實現網站流量的路由、負載平衡、TLS 加密等功能。

Ingress 控制器

  • 要使用 Ingress,需要部署一個 Ingress controller,它是負責處理 Ingress 規則的組件。常見的 Ingress controller 包括 Nginx Ingress Controller、Traefik、Haproxy Ingress 等。

Ingress 規則

  • 每個 Ingress 規則定義了一組路由規則,將流量從外部引導到內部的服務。以下是一個簡單的 Ingress 規則示例:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
spec:
  rules:
    - host: myapp.example.com
      http:
        paths:
          - path: /app
            pathType: Prefix
            backend:
              service:
                name: my-service
                port:
                  number: 80
  • 在這個 example,Ingress 規則將來自 myapp.example.com/app 路徑的 HTTP 流量導向 my-service 服務的 TCP 80 端口。

Notes

  • 配置 Service
    • 確保使用正確的 Service 類型,根據應用程序需求選擇 ClusterIP、NodePort 或 LoadBalancer。
    • 使用 label selector 來確保 Service 正確選擇要管理的 Pod。
  • 配置 Ingress
    • 部署一個合適的 Ingress 控制器,例如 Nginx Ingress Controller。
    • 使用萬用字元或具體的主機名來配置 Ingress 規則,根據應用程序需求進行路由。
  • 測試和監控
    • 在部署之前,始終在非生產環境中測試服務和 Ingress 的配置。
    • 配置監控和日誌記錄,以追蹤流量和問題。
    • 使用 Kubernetes 的 Network Policies 來限制流量,增強安全性。

上一篇
#07 ReplicaSet 和 StatefulSet
系列文
自我挑戰9
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言